Imports Clo = Enhancements.Core.Logging
Imports Ere = Enhancements.Basic.RegularExpressions
Imports Exe = Enhancements.Basic.Expressions
Imports Fun = Enhancements.Basic.Expressions.Functions
Imports Gen = System.Collections.Generic
Imports Glo = System.Globalization
Imports Iou = System.IO
Imports Ope = Enhancements.Basic.Expressions.Operators
Imports Ref = System.Reflection
Imports Reg = System.Text.RegularExpressions
Imports Sys = System
Imports Tex = System.Text
Imports Val = Enhancements.Basic.Expressions.Values
Imports Xsd = System.Xml.Schema
Imports W3c = System.Xml

Namespace Enhancements.Basic.Expressions
    ''' <summary>Represents a variable within the expression being compiled, and its sole purpose is for the user to define the variable's type.</summary>
    <Serializable(), DebuggerStepThrough()> _
    Public NotInheritable Class CompilerExpressionVariablesTypesRequestEventArgsVariable

        ''' <exception cref="IsNullException"> </exception>
        Friend Sub New(ByVal _token As Variable)
            _token.IsNullNot("_token", True)

            Name = _token.ExpressionPart
            Type = Nothing
        End Sub

        Private __Name As String = Nothing
        ''' <summary>Gets the variable's name.</summary>
        Public Property Name() As System.String
            Get
                Return __Name
            End Get
            Private Set(ByVal _value As System.String)
                __Name = _value
            End Set
        End Property

        Private __Type As Sys.Type = Nothing
        ''' <summary>Gets and sets the variable's type.</summary>
        Public Property Type() As Sys.Type
            Get
                Return __Type
            End Get
            Set(ByVal _value As Sys.Type)
                __Type = _value
            End Set
        End Property

    End Class
End Namespace
